package com.cmc.cloud.cmclink.doc.service.si;

import java.util.Collection;
import java.util.List;import java.util.Map;

import com.cmc.cloud.cmclink.doc.entity.BlnoLocalCostDO;
import com.cmc.cloud.cmclink.doc.vo.blnofreightvo.BlnoFreightCalReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnolocalcostvo.BlnoLocalCostImAllRespVO;
import com.cmc.cloud.cmclink.doc.vo.blnolocalcostvo.BlnoLocalCostImCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnolocalcostvo.BlnoLocalCostImRespVO;
import com.cmc.cloud.cmclink.doc.vo.blnolocalcostvo.BlnoLocalCostImUpdateReqVO;

/**
 * 提单本地费用 Service 接口
 *
 * @author 招商轮船-管理员
 */
public interface BlnoLocalCostImService {

    /**
     * 获得海运费提单列表
     *
     * @param reqVO 过滤参数
     * @return 海运费提单列表
     */
    List<BlnoLocalCostImRespVO> getBlnoWithLocalCostList(BlnoFreightCalReqVO reqVO);

    /**
     * 计算local cost import
     *
     * @param ids 过滤参数
     * @param vendorCsmCode cms编码
     * @param exImType 进出口类型
     * @param currentPort 当前端口
     * @return 获得Local Charge费用信息
     */
    Map<Long, String> calLocalCostIm(Collection<Long> ids, String vendorCsmCode, String exImType, String currentPort);

    /**
     * 删除local cost import
     *
     * @param blnoIds blnoIds
     */
    void deleteImDetailByBlnoIdList(Collection<Long> blnoIds);

    /**
     * 查询进口localCost详情
     *
     * @param id 主键id
     * @param exImType 进出口类型
     * @return 详情
     */
    BlnoLocalCostImAllRespVO getBlnoAllLocalCost(Long id, String exImType);

    /**
     * 查询localCost列表
     *
     * @param blnoId 提单id
     * @param exImType 进出口类型
     * @return localCost列表
     */
    List<BlnoLocalCostDO> getLocalCostByBlnoId(Long blnoId, String exImType);

    /**
     * 发送财务
     *
     * @param exImType 进出口类型
     * @param blnoIds 提单id
     * @return Map Map
     */
    Map<Long, String> toAccountLocalCost(Collection<Long> blnoIds, String exImType);

    /**
     * 创建
     *
     * @param createReqVO 请求VO
     */
    void createBlnoLocalCost(BlnoLocalCostImCreateReqVO createReqVO);

    /**
     * 更新
     *
     * @param updateReqVO updateReqVO
     */
    void updateBlnoLocalCost(BlnoLocalCostImUpdateReqVO updateReqVO);

    /**
     * 删除
     *
     * @param id 主键
     */
    void deleteBlnoLocalCost(Long id);

    /**
     * 从进口Local-charge复制，排除红冲数据
     *
     * @param id 主键
     */
    void copyFromIncome(Long id);
}
